package com.lds.config.center.server.business.item.service;

import com.lds.config.center.common.model.item.request.ItemBaseBatchCreateRequest;
import com.lds.config.center.common.model.item.request.ItemBaseBatchDeleteRequest;
import com.lds.config.center.common.model.item.request.ItemBaseBatchUpdateRequest;
import com.lds.config.center.common.model.item.request.ItemBaseCreateRequest;
import com.lds.config.center.common.model.item.request.ItemBaseDeleteRequest;
import com.lds.config.center.common.model.item.request.ItemBaseGetByIdRequest;
import com.lds.config.center.common.model.item.request.ItemBaseGetByIdsRequest;
import com.lds.config.center.common.model.item.request.ItemBaseGetByKeyRequest;
import com.lds.config.center.common.model.item.request.ItemBaseListPageRequest;
import com.lds.config.center.common.model.item.request.ItemBaseListRequest;
import com.lds.config.center.common.model.item.request.ItemBaseUpdateRequest;
import com.lds.config.center.common.model.item.response.ItemBaseBatchCreateResponse;
import com.lds.config.center.common.model.item.response.ItemBaseBatchDeleteResponse;
import com.lds.config.center.common.model.item.response.ItemBaseBatchUpdateResponse;
import com.lds.config.center.common.model.item.response.ItemBaseDeleteResponse;
import com.lds.config.center.common.model.item.response.ItemBaseListResponse;
import com.lds.config.center.common.model.item.response.ItemBaseResponse;
import com.lds.config.center.server.business.item.entity.Item;
import com.lds.management.center.common.model.db.OrderBy;
import com.lds.management.center.common.model.db.PageResult;
import com.lds.management.center.common.model.dto.ResultDTO;


/**
 * 基础服务类
 *
 * @author lidongsheng
 * @since 2025-06-30
 */
public interface ItemBaseService {
    /**
     * 创建
     */
    ResultDTO<ItemBaseResponse> createItem(ItemBaseCreateRequest request);

    /**
     * 批量创建
     */
    ResultDTO<ItemBaseBatchCreateResponse> batchCreateItem(ItemBaseBatchCreateRequest request);

    /**
     * 删除
     */
    ResultDTO<ItemBaseDeleteResponse> deleteItem(ItemBaseDeleteRequest request);

    /**
     * 批量删除
     */
    ResultDTO<ItemBaseBatchDeleteResponse> batchDeleteItem(ItemBaseBatchDeleteRequest request);

    /**
     * 更新
     */
    ResultDTO<ItemBaseResponse> updateItem(ItemBaseUpdateRequest request);

    /**
     * 批量更新
     */
    ResultDTO<ItemBaseBatchUpdateResponse> batchUpdateItem(ItemBaseBatchUpdateRequest request);

    /**
     * 根据ID查询
     */
    ResultDTO<ItemBaseResponse> getItemById(ItemBaseGetByIdRequest request);

    /**
     * 根据ID集合查询
     */
    ResultDTO<ItemBaseListResponse> getItemByIds(ItemBaseGetByIdsRequest request);

    /**
     * 根据业务主键查询
     */
    Item getItemByKey(ItemBaseGetByKeyRequest request);

    /**
     * 查询
     */
    ResultDTO<ItemBaseListResponse> listItem(ItemBaseListRequest request);

    /**
     * 查询所有
     */
    ResultDTO<ItemBaseListResponse> listAllItem(OrderBy orderBy);

    /**
     * 分页查询
     */
    ResultDTO<PageResult<ItemBaseResponse>> listItemPage(ItemBaseListPageRequest request);


    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/

    /**
     * 异步批量创建
     */
    ResultDTO<ItemBaseBatchCreateResponse> batchCreateItemAsync(ItemBaseBatchCreateRequest request);

    /**
     * 异步批量删除
     */
    ResultDTO<ItemBaseBatchDeleteResponse> batchDeleteItemAsync(ItemBaseBatchDeleteRequest request);

    /**
     * 异步批量更新
     */
    ResultDTO<ItemBaseBatchUpdateResponse> batchUpdateItemAsync(ItemBaseBatchUpdateRequest request);

    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}